package cn.tedu.property.management.mapper;

import cn.tedu.property.management.pojo.dto.ChargeDetailUpdateDTO;
import cn.tedu.property.management.pojo.vo.ChargeDetailStandardVO;
import cn.tedu.property.management.pojo.entity.ChargeDetail;
import org.springframework.stereotype.Repository;

/**
 * 收费明细的mapper
 */
@Repository
public interface ChargeDetailMapper {

    /**
     * 添加收费明显
     * @param chargeDetail 收费明显实体类
     */
    void addNew(ChargeDetail chargeDetail);

    /**
     * 根据id删除数据
     * @param id id
     */
    void deleteById(Long id);

    /**
     * 根据收费项目id删除收费明细
     * @param chargeItemId 收费项目id
     */
    void deleteByChargeItemId(Long chargeItemId);

    /**
     * 根据id修改收费明细详情
     * @param id 收费明细id
     * @param chargeDetailUpdateDTO 收费明细修改dto类
     */
    void update(Long id , ChargeDetailUpdateDTO chargeDetailUpdateDTO);

    /**
     * 根据id修改收费明细详情
     * @param chargeItemId 收费项目id
     * @param chargeDetailUpdateDTO 收费明细修改dto类
     */
    void updateByChargeItemId(Long chargeItemId , ChargeDetailUpdateDTO chargeDetailUpdateDTO);

    /**
     * 根据id查询费用详情
     * @param id 费用详情id
     * @return
     */
    ChargeDetailStandardVO selectById(Long id);

    /**
     * 根据费用项目id查询详情
     * @param chargeItemId 费用项目id
     */
    ChargeDetailStandardVO selectByStandardByChargeItemId(Long chargeItemId);

    /**
     * 根据业主id查询费用详情
     * @param ownerId 业主id
     */
    ChargeDetailStandardVO selectByStandardByOwnerId(Long ownerId);


}
